package com.fengwk.user.service;

import java.util.Collection;
import java.util.List;

import com.fengwk.support.page.PageInfo;
import com.fengwk.user.face.model.Role;

public interface RoleService {

	/**
	 * 存储角色
	 * 
	 * @param role 角色
	 * @param description 描述
	 * @return
	 */
	Role saveRole(String role, String description);
	
	/**
	 * 移除角色
	 * 
	 * @param roleId 角色id
	 * @return
	 */
	Role removeRole(Long roleId);
	
	/**
	 * 更新角色
	 * 
	 * @param roleId 角色id
	 * @param role 角色
	 * @param description 描述
	 * @return
	 */
	Role updateRole(Long roleId, String role, String description);
	
	/**
	 * 同步权限
	 * 
	 * @param roleId 目标角色id
	 * @param permissionIds 同步权限id列表
	 */
	void synPermission(Long roleId, Collection<Long> permissionIds);
	
	/**
	 * 添加角色权限
	 * 
	 * @param roleId 添加目标角色id
	 * @param permissionIds 添加的权限id列表
	 */
	void addPermission(Long roleId, Collection<Long> permissionIds);
	
	/**
	 * 移除角色权限
	 * 
	 * @param roleId 移除目标角色id
	 * @param permissionIds 移除的权限id列表
	 */
	void removePermission(Long roleId, Collection<Long> permissionIds);
	
	/**
	 * 通过用户id获取角色列表
	 * 
	 * @param userId 用户id
	 * @return
	 */
	List<Role> listRoleByUserId(Long userId);
	
	/**
	 * 分页获取角色
	 * 
	 * @param pageNum 页码
	 * @param pageSize 每页大小
	 * @return
	 */
	PageInfo<Role> pageRole(int pageNum, int pageSize);
	
}
